package com.xudu.tourbackend.controller;


import com.xudu.tourbackend.common.DeleteBatchRequest;
import com.xudu.tourbackend.common.Result;
import com.xudu.tourbackend.entity.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author xudu
 * @since 2024-06-22
 */

@RequestMapping("/tag")
public interface TagController {

    /**
     * 根据提供的Tag对象添加一个新的标签。
     *
     * @param tag 包含新标签信息的对象。
     * @param request 用于获取请求相关数据的HttpServletRequest对象。
     * @return 添加后的Tag对象，包含新标签的详细信息。
     */
    @PostMapping("/addTag")
    Result addTag(Tag tag, HttpServletRequest request);

    /**
     * 根据DeleteBatchRequest对象删除一批标签。
     *
     * @param deleteBatchRequest 包含待删除标签ID的请求对象。
     * @param request 用于获取请求相关数据的HttpServletRequest对象。
     * @return 被删除的标签数量。
     */
    @PostMapping("/deleteTag")
    Result deleteTag(DeleteBatchRequest deleteBatchRequest, HttpServletRequest request);

    /**
     * 根据提供的Tag对象更新一个标签的信息。
     *
     * @param tag 包含待更新标签信息的对象。
     * @param request 用于获取请求相关数据的HttpServletRequest对象。
     * @return 更新后的Tag对象，包含更新后的标签详细信息。
     */
    @PostMapping("/updateTag")
    Result updateTag(Tag tag, HttpServletRequest request);

    /**
     * 根据标签ID查询并返回一个标签。
     *
     * @param id 待查询标签的ID。
     * @param request 用于获取请求相关数据的HttpServletRequest对象。
     * @return 包含查询结果的Tag对象。
     */
    @GetMapping("/searchTagById")
    Result searchTagById(Integer id, HttpServletRequest request);

    /**
     * 根据标签名称查询并返回符合条件的标签列表。
     *
     * @param tagName 待查询的标签名称。
     * @param request 用于获取请求相关数据的HttpServletRequest对象。
     * @return 包含查询结果的Tag对象列表。
     */
    @GetMapping("/searchTagByName")
    Result searchTagByName(String tagName);

}
